Story1 소켓 작성
1 프로토콜 스택 내부 구성
이번에 정리할 프로토콜 스택은 아래 그램과 같이 OS에 내장된 네트워크 제어용 소프트웨어이다.

TCP와 UDP
- TCP는 브라우저 메일 등 일반 어플리케이션이 데이터를 송수신할때 사용
- UDP는 서버에 대한 조회 등 짧은 제어용 데이터를 송.수신할때 사용
IP 프로토콜
패킷 송.수신 동작 제어하는 부분 패킷이란 데이터를 운반할 때 데이터를 작게 나눠놓은 것
IP 안에는 ICMP와 ARP라는 프로토콜을 다루는 부분이 포함
ICMP는 패킷 운반할 때 발생하는 오류 통지하거나 제어용 메세지를 통지 ARP는 IP 주소에 대응하는 이더넷의 MAC 주소 조사에 사용
LAN Driver
LAN 어뎁터의 하드웨어를 제어
2 소켓의 실체는 통신 제어용 제어 정보
프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있음 통신 동작을 제어하기 위한 제어 정보를 기록
- 통신 상대의 IP 주소
- 포트 번호
- 통신 동작이 어떤 상태인가 등을 기록
이 제어 정보가 소켓의 실체라고 할 수 있다.
프로토콜 스택은 이 제어 정보를 참조하면서 동작 예를 들어, 데이터를 송신할 때는
- 소켓에 기록되어 있는 상대측의 IP주나 포트 번호를 보고
- 그 IP 주소와 포트 번호를 대상으로 데이터 송신
- 응답이 돌아오는지의 여부와 송신 동작 후의 경과 시간을 기록
3 Socket을 호출했을 때의 동작
브라우저가 Socket 라이브러리 안에 있는 socket이나 connect를 호출하면 어떤 동작을 할까?

위의 그림과 같이 socket()을 호출하면 프로토콜 스택은 의뢰에 따라 소켓을 생성
이때 프로토콜 스택은 소켓 한 개 분량의 메모리 영역을 확보한 뒤 초기 상태라는 것을 메모리 영역에 기록
소켓이 생성되면 디스크립터를 애플리케이션에게 알려줌(어떤 소켓인지 알려주는 번호표와 같음)
디스크립터를 통해 여러 소켓 중 사용하고 있는 소켓을 알 수 있다.
소켓에는
- 누구와 누가 통신하고 있는지
- 어떤 상태로 있는지 등이 기록되어 있어서 통신 상대의 정보를 애플리케이션에서 일일이 통지받을 필요가 없어짐.
Thanks for reading! Read other posts?